package A1_贪心算法;

import java.util.Arrays;

public class LC_1005K次取反后最大化的数组和 {
    public int largestSumAfterKNegations(int[] nums, int k) {
        nums = Arrays.stream(nums)    // 将int数组转换为IntStream
                .boxed()                  // 将基本类型int装箱为Integer对象
//                .sorted(Comparator.comparingInt(Math::abs))  // 按绝对值升序排序
                .sorted((o1, o2) -> Math.abs(o2)-Math.abs(o1))  // 按绝对值降序排序
                .mapToInt(Integer::intValue)  // 将Integer转换回基本类型int
                .toArray();
        for(int i=0;i<nums.length;i++){
            if(nums[i]<0 && k>0){
                nums[i]*=-1;
                k--;
            }
        }
        if(k%2==1)
            nums[nums.length-1]*=-1;

//        int res=0;
//        for(int i=0;i<nums.length;i++)
//            res+=nums[i];
//        return res;
        return Arrays.stream(nums).sum();
    }
}
